package gdconf

import (
	"server_cluster/common/logger"
)

// 场景交互物件配置表

type GadgetConfig struct {
	GadgetId     int32 `csv:"ID" gorm:"primary_key;autoIncrement:false"` // 交互物件id
	Type         int32 `csv:"Type,omitempty"`                            // 类型
	DefaultState int32 `csv:"Status,omitempty"`                          // 默认状态
	SceneId      int32 `csv:"SceneId,omitempty"`                         // 所在场景
}

func (g *GadgetConfig) TableName() string {
	return "config_gadget"
}

func (g *GameDataConfig) saveGadgetConfig() {
	list := make([]*GadgetConfig, 0)
	list = append(list, readTable[GadgetConfig](g.CsvPathPrefix+"Interactive.csv")...)
	// list = append(list, readTable[GadgetConfig](g.CsvPathPrefix+"Box.csv")...)
	saveTableToDb[GadgetConfig](g.Db, list)
}

func (g *GameDataConfig) loadGadgetConfig() {
	g.GameDataMaps.GadgetConfigMap = make(map[int32]*GadgetConfig)
	for _, gadgetConfig := range loadTableFromDb[GadgetConfig](g.Db) {
		g.GameDataMaps.GadgetConfigMap[gadgetConfig.GadgetId] = gadgetConfig
	}
	logger.Info("GadgetConfig Count: %v", len(g.GameDataMaps.GadgetConfigMap))
}

func GetGadgetConfig(gadgetId int32) *GadgetConfig {
	value, exist := CONF.GameDataMaps.GadgetConfigMap[gadgetId]
	if !exist {
		logger.Error("[ConfigNotFound] GadgetConfig, gadgetId: %v", gadgetId)
		return nil
	}
	return value
}

func GetGadgetConfigMap() map[int32]*GadgetConfig {
	return CONF.GameDataMaps.GadgetConfigMap
}
